home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1997 / MacHack 1997.toast / Presentations / Presentations ’97 / Sessions ’97 / Multiplatform Code⁄Data Sharing / HelloBothWorlds / Libraries / byteorder.h next >
Encoding:
Text File  |  1997-06-26  |  1.3 KB  |  42 lines  |  [TEXT/CWIE]

  1.  
  2. // mail <chelly@eden.com> or surf http://www.eden.com/~chelly for feedback
  3. // free source code - do whatever you like with it
  4.  
  5. // byte swapping to deal with big endian and little endian processors
  6.  
  7. #ifndef byteorder_H
  8. #define byteorder_H
  9.  
  10. #include "common.h"
  11.  
  12. #if TARGET_IS_MACOS
  13.  
  14.     inline uint16 SwapIfRequired( uint16 v ) { return v; }
  15.     inline  int16 SwapIfRequired(  int16 v ) { return v; }
  16.     inline uint32 SwapIfRequired( uint32 v ) { return v; }
  17.     inline  int32 SwapIfRequired(  int32 v ) { return v; }
  18.     
  19.     inline void SwapIfRequired( uint16* ) { }
  20.     inline void SwapIfRequired(  int16* ) { }
  21.     inline void SwapIfRequired( uint32* ) { }
  22.     inline void SwapIfRequired(  int32* ) { }
  23.     
  24. #elif TARGET_IS_WIN95
  25.  
  26.     inline uint16 SwapIfRequired( uint16 v ) { return (v >> 8) | (v << 8); }
  27.     inline  int16 SwapIfRequired(  int16 v ) { return SwapIfRequired( (uint16) v ); }
  28.     inline uint32 SwapIfRequired( uint32 v )
  29.             { return (v >> 24) | (v << 24) | ((v >> 8) & 0xFF00) | ((v << 8) & 0xFF0000); }
  30.     inline  int32 SwapIfRequired(  int32 v ) { return SwapIfRequired( (uint32) v ); }
  31.     
  32.     inline void SwapIfRequired( uint16* p ) { *p = SwapIfRequired( *p ); }
  33.     inline void SwapIfRequired(  int16* p ) { *p = SwapIfRequired( *p ); }
  34.     inline void SwapIfRequired( uint32* p ) { *p = SwapIfRequired( *p ); }
  35.     inline void SwapIfRequired(  int32* p ) { *p = SwapIfRequired( *p ); }
  36.  
  37. #endif
  38.  
  39.  
  40. #endif
  41.  
  42.